后台自定义json, File,Single line text字段使用

 

简述:一、后台给产品自定义gallery-scenario字段操作如下:登录到 Shopify 后台:首先,登录到你的 Shopify 商户账号。选择产品:进入要编辑的产品页面。进入 Metafields 配置页面:在产品编辑页面的右侧菜单中,找到并点击 Metafields 选项。如果尚未创建任何 Metafield,则需要先创建一个新的 Metafield 配置。如果已经有了 Metafield 配置,直接点击 Add a Metafield 添加一个新的 Metafield。填写 Metafield 详细信息:Namespace:命名空间,可以是 custom 或其他自定义的命名空间。命名空间用于将 Metafields 组织在一起,以防止冲突。Key...

后台自定义json, File,Single line text字段使用

详情:

一、后台给产品自定义gallery-scenario字段操作如下:


  1. 登录到 Shopify 后台:首先,登录到你的 Shopify 商户账号。

  2. 选择产品:进入要编辑的产品页面。

  3. 进入 Metafields 配置页面

    • 在产品编辑页面的右侧菜单中,找到并点击 Metafields 选项。

    • 如果尚未创建任何 Metafield,则需要先创建一个新的 Metafield 配置。

    • 如果已经有了 Metafield 配置,直接点击 Add a Metafield 添加一个新的 Metafield。

  4. 填写 Metafield 详细信息

    • Namespace:命名空间,可以是 custom 或其他自定义的命名空间。命名空间用于将 Metafields 组织在一起,以防止冲突。

    • Key:键名,例如 gallery-scenario。这是 Metafield 的唯一标识符,通过该键名在 Liquid 模板中获取数据。

    • Value Type:值的类型,选择 JSON。这将允许你在该 Metafield 中存储 JSON 格式的数据。

    • Value:在这里填入包含图片信息的 JSON 数据,例如:

      jsonCopy code[
        {"title": "Image 1", "url": "https://example.com/image1.jpg"},
        {"title": "Image 2", "url": "https://example.com/image2.png"},
        {"title": "Image 3", "url": "https://example.com/image3.gif"}]
    • Visibility:可见性选项,根据需要选择公开或者仅内部使用。

  5. 保存 Metafield:填写完 Metafield 后,确保点击 SaveSave Metafield 保存更改。

注意事项:

  • 命名空间和键名:确保命名空间和键名的唯一性,以防止与其他 Metafields 冲突。

  • JSON 数据格式:确保在 Value 字段中输入正确的 JSON 格式数据,包含所需的图片信息。

  • 保存并验证:保存 Metafield 后,可以在产品页面的 Metafields 列表中看到添加的 gallery-scenario 字段及其值。



二、前端页面调用如下:

<!-- 将 JSON 自定义数据字符串gallery-scenario输出到页面 -->

<div id="gallery-data" style="display: none;">

  {{ product.metafields.custom['gallery-scenario'] }}

</div>


<script>

  document.addEventListener('DOMContentLoaded', function() {

    var galleryDataElement = document.getElementById('gallery-data');

    if (galleryDataElement) {

      var galleryData = galleryDataElement.textContent.trim();

      try {

        var galleryImages = JSON.parse(galleryData);

        console.log('Parsed Gallery Images:', galleryImages); // 输出解析后的数据以供调试

        if (Array.isArray(galleryImages) && galleryImages.length > 0) {

          var tujiadContainer = document.querySelector('.project-box'); // 获取 tujiad 容器

          galleryImages.forEach(function(image) {

            var imgElement = document.createElement('img');

            imgElement.src = image.url;

            imgElement.alt = image.title;

            var imgContainer = document.createElement('p');

            imgContainer.appendChild(imgElement);

            tujiadContainer.appendChild(imgContainer); // 将图片添加到 tujiad 容器中

          });

        } else {

          console.log('No images found in the gallery-scenario metafield.');

        }

      } catch (error) {

        console.error('Error parsing JSON data:', error);

      }

    }

  });

</script>


三、多行自定义

image.png
循环

{% if product.metafields.custom_options.multi_select %}

    {% for option in product.metafields.custom_options.multi_select %}

      <div>{{ option }}</div>

    {% endfor %}

{% endif %}





如果你想在循环中检查 option 是否等于某个特定值(例如 "Paint"),可以在 for 循环内使用 if 条件来判断并输出特定内容。下面是实现方法:


{% if product.metafields.custom.options_choose %}

  <p>Options: {{ product.metafields.custom.options_choose | join: ', ' }}</p> <!-- 输出所有选项 -->


  {% assign options = product.metafields.custom.options_choose | join: ', ' %} <!-- 将选项转换为字符串 -->


  {% if options contains "sizing Guideline" %}

    <div class="OptionsItem01">sizing Guideline</div>

  {% endif %}


  {% if options contains "Paint" %}

    <div class="OptionsItem02">Paint</div>

  {% endif %}


  {% if options contains "Aerylic" %}

    <div class="OptionsItem03">Aerylic</div>

  {% endif %}


  {% if options contains "Color Temperature & Color" %}

    <div class="OptionsItem05">Color Temperature &amp; Color</div>

  {% endif %}


  {% if options contains "Metal Craftsmanship" %}

    <div class="OptionsItem06">Metal Craftsmanship</div>

  {% endif %}


  {% if options contains "Stickers" %}

    <div class="OptionsItem07">Stickers</div>

  {% endif %}


{% else %}

  <p>No options available.</p>

{% endif %}



自定义字段为 Single line text类型调用 比如自定义了 .iocn 

   {%- if collection and collection.metafields.custom.iocn != blank -%}

                           <!-- <a class="navimg"  href="{{ subitem.url }}">

                            <img src="{{ collection.metafields.custom.iocn | image_url: 'medium' }}" style="width:100%; height:100%;">

                       </a> -->

                        {%- endif -%}



自定义字段为  File 类型调用 比如自定义了 iconimg

       {%- if collection and collection.metafields.custom.iconimg != blank -%}

                      <a class="navimg" href="{{ subitem.url }}">

                        <img src="{{ collection.metafields.custom.iconimg | file_url }}" style="width:100%; height:100%;">

                      </a>

                    {%- endif -%}